﻿Imports DTO
Imports BUS

Public Class frmLoaiAcQuy
    Private laqController As LoaiAcQuyBUS
    Private _laq As LoaiAcquyDTO
    Private indexLAQ As Integer = 0
    Private flagInsert As Boolean

    '------------------------------------------------------'
    '                 Các Hàm Xử Lý Phụ                '
    '------------------------------------------------------'
    Private _trangThaiDangNhap As Boolean
    Public Sub TrangThai(trangthai As Boolean)
        _trangThaiDangNhap = trangthai
    End Sub
    Private Sub LoadGrid()
        GridLoaiAcQuy.ClearSelection()
        laqController = New LoaiAcQuyBUS()
        Dim sListlaq As New List(Of LoaiAcquyDTO)
        sListlaq = laqController.GetData()
        'GridLoaiAcQuy.DataSource = sListlaq'
        GridLoaiAcQuy.Rows.Clear()
        For i As Integer = 0 To sListlaq.Count - 1
            'GridLoaiAcQuy.Rows.Add(i + 1, sListlaq(i).MaLoai)'
            GridLoaiAcQuy.Rows.Add(i + 1, sListlaq(i).TenLoai)
        Next
    End Sub

    Private Sub LoadText(ByVal i As Integer)
        lbMaLoai.Text = GridLoaiAcQuy.Rows(i).Cells(0).FormattedValue.ToString()
        txtTenAcQuy.Text = GridLoaiAcQuy.Rows(i).Cells(1).FormattedValue.ToString()
    End Sub

    Private Sub LockText(ByVal b As Boolean)
        txtTenAcQuy.ReadOnly = b
        If b = True Then
            txtTenAcQuy.ForeColor = Color.Blue
        End If
    End Sub

    Private Sub BlockButton(ByVal t As Control, ByVal h As Control, ByVal v As Control, Optional ByVal capdo As Byte = 0)
        Select Case capdo
            Case 0
                t.Enabled = False
                h.Enabled = True
                v.Enabled = True
            Case 1
                t.Enabled = True
                h.Enabled = False
                v.Enabled = False
        End Select
    End Sub

    Public Function InsertUpdateLoaiAcQuy(ByVal laq As LoaiAcquyDTO, ByVal flagIsUp As Boolean) As Boolean
        Return laqController.InsertUpdateLoaiAcQuy(laq, flagIsUp)
    End Function

    Private Function TestData() As Boolean
        TestData = True
        If txtTenAcQuy.Text = "" Then
            TestData = False
            MsgBox("Tên loại ác quy không được bỏ trống!", MsgBoxStyle.Exclamation, "Thông báo lỗi")
            txtTenAcQuy.Focus()
            Exit Function
        End If
    End Function

    '------------------------------------------------------'
    '                 Các Hàm Xử Lý Chính                 '
    '------------------------------------------------------'
    Private Sub btnThem_Click(sender As Object, e As EventArgs) Handles btnThem.Click
        flagInsert = True
        Dim MLoai As Integer = 1
        Dim TLoai As String = txtTenAcQuy.Text
        If TestData() = True Then
            _laq = New LoaiAcquyDTO(MLoai, TLoai)
            InsertUpdateLoaiAcQuy(_laq, flagInsert)
            MsgBox("Đã thêm dữ liệu thành công", MsgBoxStyle.Information, "Thông báo")
            LoadGrid()
            GridLoaiAcQuy.Enabled = True
        End If
        BlockButton(btnThem, btnSua, btnXoa, 1)
    End Sub

    Private Sub LoaiAcQuy_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        Dim mdiparent As Main = DirectCast(Me.MdiParent, Main)
        If mdiparent.DaDangNhap = False Then
            If MessageBox.Show("Bạn chưa nhập Mật Khẩu để thực hiện chỉnh sửa Cơ Sở Dữ Liệu. Bạn có muốn nhập Mật Khẩu không?", "Thông Báo", MessageBoxButtons.YesNo, MessageBoxIcon.Warning) = Windows.Forms.DialogResult.Yes Then
                Dim frmMatKhau As New NhapMatKhau()
                'frmMatKhau.MdiParent = Me.MdiParent
                Dim result = frmMatKhau.ShowDialog()
                If result = Windows.Forms.DialogResult.Cancel Then
                    Me.Close()
                ElseIf result = Windows.Forms.DialogResult.OK Then

                    mdiparent.DangNhap()
                End If
            Else
                Me.Close()
            End If
        End If
        lbMaLoai.Text = "**"
        LoadGrid()
        BlockButton(btnThem, btnSua, btnXoa, 1)
    End Sub

    Private Sub btnThoat_Click(sender As Object, e As EventArgs) Handles btnThoat.Click
        Me.Close()
    End Sub

    Private Sub btnSua_Click(sender As Object, e As EventArgs) Handles btnSua.Click
        flagInsert = False
        Dim MLoai As Integer = Val(lbMaLoai.Text)
        Dim TLoai As String = txtTenAcQuy.Text
        If TestData() = True Then
            _laq = New LoaiAcquyDTO(MLoai, TLoai)
            InsertUpdateLoaiAcQuy(_laq, flagInsert)
            MsgBox("Đã cập nhâp dữ liệu thành công", MsgBoxStyle.Information, "Thông báo")
            LoadGrid()
            GridLoaiAcQuy.Enabled = True
        End If
    End Sub

    Private Sub GridLoaiAcQuy_CellContentClick(sender As Object, e As DataGridViewCellEventArgs) Handles GridLoaiAcQuy.CellContentClick
        If e.RowIndex >= 0 Then
            LoadText(e.RowIndex)
            BlockButton(btnThem, btnSua, btnXoa, 0)
        End If
    End Sub

    Private Sub btnXoa_Click(sender As Object, e As EventArgs) Handles btnXoa.Click
        Dim MLoai As Integer = lbMaLoai.Text
        Dim TLoai As String = txtTenAcQuy.Text
        Dim flagAcQuy As Boolean

        flagAcQuy = laqController.TestDB("Select * From ACQUY Where MaLoai =" & MLoai & "")
        If (flagAcQuy = False) Then
            Dim qs = MsgBox("Bạn chắc chắn muốn xóa tất cả thông tin về:" _
                & vbCrLf & vbCrLf & " - MaLoai: " & lbMaLoai.Text _
                & vbCrLf & vbCrLf & " - Tên Loại: " & txtTenAcQuy.Text, _
                vbInformation + vbYesNo, "Thông báo")
            If qs = vbYes Then
                _laq = New LoaiAcquyDTO(MLoai)
                laqController.DeleteLoaiAcQuy(_laq)
                LoadGrid()
                MsgBox("Dữ liệu đã xóa thành công", vbInformation, "Thông báo")
            Else
                MsgBox("Đã hủy thao tác xóa!", vbExclamation, "Thông báo")
            End If
        Else
            MsgBox("Bạn không thể xóa dữ liệu về:" _
        & vbCrLf & vbCrLf & " - Mã Loại: " & lbMaLoai.Text _
        & vbCrLf & vbCrLf & " - Tên Loại: " & txtTenAcQuy.Text _
        & vbCrLf & vbCrLf & "Vì dữ liệu này tồn tại ở những Table khác!", vbCritical, "Thông báo")
        End If
        txtTenAcQuy.Focus()
        txtTenAcQuy.Text = ""
    End Sub
End Class